<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
    <script type="text/javascript">
        //1.去掉前后所有空格，留下中间空格	
        // var arr = "   I am a student   "
        // function trim(str) {
        //     //将字符串更改为数组
        //     let a = str.split("")
        //         // console.log(a);
        //     let b = a.splice(3, 16)
        //         // console.log("b", b);
        //     let c = b.join("")
        //     return c;
        // }
        // console.log(arr); //有空格的
        // console.log(trim(arr)) //俩边空格处理后的
        // 
        // 
        //I am a student
        // 2. 字符串中的单词翻转
        // var arr1 = "I am a student"
        // function reverse(str) {
        //     let a = str.split(" ")
        //         //第一步将字符串转化为数组已空格分割开
        //     let b = a.reverse()
        //         //第二步将数组进行数组方法进行反转
        //     let c = b.join(" ")
        //         // 最后在转换为数组得出结论student a am I
        //     return c
        // }
        // console.log(reverse(arr1)) //student a am I
        // 3. 把字符串中每一个单词的字母翻转
        // var arr2 = "hellow world"
        // function reverses(str) {
        //     let a = str.split("")
        //         //第一步将字符串转化为数组
        //     let b = a.reverse()
        //         //第二步将数组进行数组方法进行反转
        //     let c = b.join("")
        //         // 最后在转换为数组得出结论dlrow wolleh
        //     return c
        // }
        // console.log(reverses(arr2)) //dlrow wolleh
        //4.原生js模拟jq中insertAfter（）方法；在元素的后面插入一个元素;
        // function insertAfter(newElement, targetElement) {}
        // console.log(insertAfter(aa, bb));
        // 5. 找到一个数组中第二大的数
        // var arr3 = [0, 4, 1412, 215, 13224, 514, 515]
        // function seach(arr) {
        //     let c = arr.sort((a, b) => {
        //         return b - a
        //     })
        //     let d = c.splice(1, 1).join("")
        //     return d
        // }
        // console.log(seach(arr3)) //1412
        //6.封装一个方法 function random(x,y){};要求在x与y之间求出五个随机数，且随机数不能重复
        // function random(x, y) {
        //     let b = []
        //     for (var i = 1; i <= 5; i++) {
        //         let a = Math.round(Math.random() * (y - x) + x)
        //         if (b.indexOf(a) == -1) {
        //             b.push(a)
        //         } else {
        //             i--
        //         }
        //     }
        //     return b
        // }
        // console.log(random(7, 15)) //[14, 12, 11, 10, 13]
        //7.封装一个函数，对data中的对象按照id值的大小做升序排列,返回排序后的对象
        // var data = [{
        //     id: 5,
        //     name: "marry",
        //     email: "marry@sohu.com",
        // }, {
        //     id: 8,
        //     name: "kitty",
        //     email: "kitty@163.com"
        // }, {
        //     id: 3,
        //     name: "jack",
        //     email: "jack@263.com"
        // }, {
        //     id: 2,
        //     name: "amy",
        //     email: "amy@sina.com.cn"
        // }, ];
        // function sortId(data) {
        //     let a = []
        //     for (var i = 0; i <= data.length; i++) {
        //         a.push(data[i].id)
        //         a.sort()
        //         if (i == data.length - 1) {
        //             let b = []
        //             let s = []
        //             for (var j = 0; j <= data.length - 1; j++) {
        //                 let f = data.filter(item => {
        //                     return item.id == a[j]
        //                 })
        //                 f.forEach(item => {
        //                     s.push(item)
        //                 })
        //             }
        //             return s
        //         }
        //     }
        // }
        // console.log(sortId(
        //         data)) //[{id: 2, name: "amy", email: "amy@sina.com.cn"},{id: 3, name: "jack", email: "jack@263.com"},{id: 5, name: "marry", email: "marry@sohu.com"},{id: 8, name: "kitty", email: "kitty@163.com"}]
        //8.封装一个方法，把字符串中的关键字替换成“***”
        // function retxt(str, now, target) {
        //     while (str.indexOf(target) != -1) {
        //         str = str.replace(target, now)
        //     }
        //     return str
        // }
        // var str =
        //     "台湾艺人陈乔恩因酒驾发表道歉声明_国内外最新报道 陈乔恩酒驾的消息一经传出，不到两小时就冲上微博热搜榜第一名，点击率破两百多万，已超过陈学冬与神秘女子恋情曝光的1倍。艺人'陈乔恩'。（图片来源：台湾《旺报》）";
        // console.log(retxt(str, '***',
        //     '陈乔恩')); //台湾艺人***因酒驾发表道歉声明_国内外最新报道 ***酒驾的消息一经传出，不到两小时就冲上微博热搜榜第一名，点击率破两百多万，已超过陈学冬与神秘女子恋情曝光的1倍。艺人'***'。（图片来源：台湾《旺报》）
        //9.密码验证。要求： 如果输入的密码在数字， 字母、 符号中只出现了一种， 则密码强度为弱， 如果出现了两种， 则密码强度为中， 如果出现了三种， 则密码强度为强；
        // var a = prompt("请输入密码");
        // function pass(value) {
        //     let a = /^[0-9]{3,16}$/ //数字的正则
        //     let b = /^[a-z]{3,16}$/ //字母的正则
        //     let c = /^[~!@#$%^&*]{3,16}$/ //特殊符号的正则
        //         // if (a.test(value)) {
        //         //     return `你输入的密码强度-低`
        //         // } else if (b.test(value)) {
        //         //     return `你输入的密码强度-低`
        //         // } else if (c.test(value)) {
        //         //     return `你输入的密码强度-低`
        //         // }
        // }
        // console.log(pass(a)); //你输入的密码强度-高
        //二、简答题
        //2.给字符串原型上加载1个方法，要求写一个重复打印字符串对象的方法，输入一个整数，这个整数代表重复打印的次数  比如： console.log('hello'.repeatify(3)); 这样会打印出hellohellohello。
        //传统函数方法
        // function repeatify(str, num) {
        //     let a = str.split()
        //     let c = []
        //     for (var i = 1; i <= num; i++) {
        //         a.map(item => {
        //             c.push(item)
        //         })
        //     }
        //     return c.join("")
        // }
        // console.log(repeatify('hello', 3)); //hellohellohello
        //原型方法
        // String.prototype.repeatify = function(times) {
        //     let str = ''
        //     for (var i = 1; i <= times; i++) {
        //         str = str + this
        //     }
        //     return str
        // }
        // console.log('hello '.repeatify(3)) //hellohellohello
        //3. 下面这段代码的输出结果是什么？解释一下你的答案
        // function test() {
        //     console.log(a);
        //     console.log(foo());
        //     var a = 1;
        //     function foo() {
        //         return 2;
        //     }
        // }
        // test();
        //解释   因为从上往下执行的顺序到了console.log(a)的时候此时的变量还没有声明所以undefined到console.log(foo())的时候调用方法就可以执行这个函数还有返回值
        //4. 通过下面的代码给出结果， 解释一下你的答案：
        // var fullname = 'John Doe';
        // var obj = {
        //     fullname: 'Colin Ihrig',
        //     prop: {
        //         fullname: 'Aurelio De Rosa',
        //         getFullname: function() {
        //             return this.fullname;
        //         }
        //     }
        // };
        // console.log(obj.prop.getFullname());
        // var test = obj.prop.getFullname;
        // console.log(test());
        //5.通过使用call() 或apply() 方法使第4题最后一个console.log() 输出的结果为Aurelio De Rosa.
    </script>
</body>

</html>